<?php

namespace Maestros\Controller\Service;

use Zend\Db\Adapter\Adapter;
use Componentes\Controller\UtilsArrayController;
use Maestros\Model\Entity\EstadoCivil;
use Maestros\Controller\Service\GenericService;
use Maestros\Model\Dao\EstadoCivilDAO;
use DateTime;
use DateTimeZone;
use Inscripcion\Controller\Service\ControlInscripcionService;

//SERVICIO
class EstadoCivilService extends GenericService {

    /**
     * @var Zend\Db\Adapter\Adapter 
     */
    private $dbAdapter;
    private static $estadoCivilService;

    /**
     * @param \Zend\Db\Adapter\Adapter $dbAdapter
     */
    private function __construct(Adapter $dbAdapter) {
        $this->dbAdapter = $dbAdapter;
    }

    public static function getInstance($adapter) {
        if (self::$estadoCivilService == null) {
            self::$estadoCivilService = new EstadoCivilService($adapter);
        }
        return self::$estadoCivilService;
    }

    public function getEstadoCivilDao() {
        return EstadoCivilDAO::getInstance($this->dbAdapter);
    }

    /**
     * @param type $id
     * @return type
     */
    public function getRegistro($id) {
//        $servicioControl = ControlInscripcionService::getInstance($this->dbAdapter);
//        $controlInscripcion = $servicioControl->obtenerInscripcionSegunCedulaAlumnoYLapsoInscripcion('15598390', '201521');
////        echo DateTime::createFromFormat('Y-m-d H:i:s', $controlInscripcion->getHoraInicio());
//        echo '*********';
//        $horaNow = new DateTime("now", new DateTimeZone('America/Caracas'));
//        echo 'hora now: ' . $horaNow->format('Y-m-d H:i:s');
//        $horaInicio = DateTime::createFromFormat('Y-m-d H:i:s', $controlInscripcion->getHoraInicio());
//        $horaFin = DateTime::createFromFormat('Y-m-d H:i:s', $controlInscripcion->getHoraFin());
//        echo '*********';
//        echo 'hora inicio: ' . $horaInicio->format('Y-m-d H:i:s');
//        echo '*********';
//        echo 'hora fin: ' . $horaFin->format('Y-m-d H:i:s');
//        echo '*********';
//        if (($horaInicio < $horaNow) && ($horaNow < $horaFin)) {
//            echo 'valido';
//        } else {
//            echo 'no valido';
//        }
//        echo '*********';
        $data = null;
        $success = false;
        $estadoCivil = $this->obtenerEstadoCivilSegunId($id);
        if ($estadoCivil->getId() != null) {
            $data[0] = $estadoCivil->objectToArray();
            $success = true;
        }
        return UtilsArrayController::organizarOutput($success, $data, null);
    }

//POR HACER
    public function getRegistroCompleto($id) {
        $estadoCivil = $this->obtenerEstadoCivilSegunId($id);
        $data[0] = $estadoCivil->objectToArray();
        $data[0]['_grupo'] = $this->optenerArrayGrupo($estadoCivil);
        return UtilsArrayController::organizarOutput(true, $data, null);
    }

//------Retornan los objetos-------

    public function obtenerEstadoCivilSegunId($id) {
        $registros = $this->getEstadoCivilDao()->getRegistro($id);
        $data = UtilsArrayController::llenarData($registros);
        $estadoCivil = new EstadoCivil($data[0]);
        return $estadoCivil;
    }

}
